11-10. エンドレスチェーン
◇エンドレスチェーン
それでは、ここでエンドレスチェーンを作ってみましょう。
エンドレスチェーンとは始まりと終りのないチェーンで具体的には自転車のチェーンがそれに当たります。
因みにバイク屋でチェーン交換の時エンドレスチェーンを指定すると、結構、迷惑かもしれません。(タイヤはずさないと取り付けられないから)
さっきのプログラムのs5には次の構造体が示されていませんでした。
つまり、ここにs1のアドレスを指定すれば、s5とs1が繋がって見事に、エンドレスチェーンができあがります。(片道通行ではありますが・・・)
1: #include<stdio.h> 2: 3: typedef struct data_chain{ 4: int number; 5: char *p_string; 6: struct data_chain *p_st; 7: }DataChain; 8: 9: main() 10: { 11: DataChain s1={1,"NameA",NULL}; 12: DataChain s2={2,"NameB",NULL}; 13: DataChain s3={3,"NameC",NULL}; 14: DataChain s4={4,"NameD",NULL}; 15: DataChain s5={5,"NameE",NULL}; 16: DataChain *p_data; 17: 18: s1.p_st = &s2; 19: s2.p_st = &s3; 20: s3.p_st = &s4; 21: s4.p_st = &s5; 22: s5.p_st = &s1; 23: 24: for(p_data = &s1; p_data != NULL; p_data = p_data->p_st) 25: printf("%2d %s\n",p_data->number, p_data->p_string); 26: return; 27: }
とりあえず、エンドレスチェーンはできましたが無限ループなので実行したら [Ctrl]+[C] でプログラムを止めてください。